<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>DataReader</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/DataReader"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-DataReader rootpage-DataReader skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">DataReader</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="ADO.NET" title="ADO.NET">ADO.NET</a>, a <b>DataReader</b> is a broad category of objects used to sequentially read data from a data source.<sup id="cite_ref-DataReaders_1-0" class="reference"><a href="#cite_note-DataReaders-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> DataReaders provide a very efficient way to access data, and can be thought of as a Firehose cursor from <a href="Active_Server_Pages" title="Active Server Pages">ASP Classic</a>, except that no <a href="Server-side" class="mw-redirect" title="Server-side">server-side</a> <a href="Cursor_(databases)" title="Cursor (databases)">cursor</a> is used. A DataReader parses a <a href="Tabular_Data_Stream" title="Tabular Data Stream">Tabular Data Stream</a> from <a href="Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft SQL Server</a>, and other methods of retrieving data from other sources.
</p><p>A DataReader is usually accompanied by a Command object that contains the query, optionally any parameters, and the connection object to run the query on.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="DataReader_types">DataReader types</h2></div>
<p>There is no DataReader class in <a href="ADO.NET" title="ADO.NET">ADO.NET</a>, but there are a number of classes that implement the IDataReader interface:
</p>
<ul><li><style data-mw-deduplicate="TemplateStyles:r886049734">
/* start https://en.wikipedia.org/ */
.mw-parser-output .monospaced{font-family:monospace,monospace}
/* end https://en.wikipedia.org/ */
</style><span class="monospaced">System.Data.SqlClient.SqlDataReader</span></li>
<li><span class="monospaced">System.Data.OleDb.OleDbDataReader</span></li>
<li><span class="monospaced">Oracle.OracleClient.OracleDataReader</span></li></ul>
<p>DataReaders have a small footprint and good performance because each is tailor-made to the task at hand, however this makes it more difficult to write an application that can be moved from one backend data source to another. Some provider-specific DataReaders expose types used by the underlying database - for example, <span class="monospaced">int</span> values can be null in Microsoft SQL Server, but not in the <a href=".NET_Framework" title=".NET Framework">.NET Framework</a> prior to version 2.0.
</p>
<div class="mw-heading mw-heading2"><h2 id="Strong_vs_weak_typing">Strong vs weak typing</h2></div>
<p>When using a DataReader to retrieve data, the developer can choose to read field values in strongly typed manner ( <i>example: <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">myReader.GetString(12)</code></i> ) or a weakly typed manner, returning then as <span class="monospaced">System.Object</span>s ( <i>example:</i> <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">myReader.GetValue(12)</code> ). Both approaches have their pros and cons.
</p><p>Using the strongly typed retrieval methods can be more cumbersome, especially without specific knowledge of the underlying data. Numeric values in the database can translate to several <a href=".NET_Framework" title=".NET Framework">.NET</a> types: <span class="monospaced"><a href="Int16" class="mw-redirect" title="Int16">Int16</a>, <a href="Int32" class="mw-redirect" title="Int32">Int32</a>, <a href="Int64" class="mw-redirect" title="Int64">Int64</a>, Float, <a href="Decimal" title="Decimal">Decimal</a></span>, or <span class="monospaced"><a href="Currency" title="Currency">Currency</a></span>. Trying to retrieve a value using the wrong type results in an exception being thrown, which stops code from running further, and slows the application down. This is also true when you use the right type, but encounter a <span class="monospaced">DbNull</span> value ( <i>this can be avoided by using the <span class="monospaced">IsDbNull</span> boolean function of the DataReader class</i> ). The benefit to this retrieval method is that data validation is performed sooner, improving the probability of data correction being possible.
</p><p>Weakly typed data retrieval allows for quick code writing, and allows for the data to be used in some fashion when the developer doesn't know beforehand what types will be returned. Further, with some effort, the programmer can extract the value into a variable of the proper type by using the <span class="monospaced">GetFieldType</span> or <span class="monospaced">GetDataTypeName</span> methods of the DataReader.
</p>
<div class="mw-heading mw-heading2"><h2 id="Common_errors">Common errors</h2></div>
<p>A DataReader can in some cases be used in place of a DataTable, however many programmers have experienced connection bloat when following this approach. A DataReader can only be used against an (already) open <a href="Database_Connection" class="mw-redirect" title="Database Connection">database connection</a>; that connection isn't closed until the DataReader's <span class="monospaced">Dispose</span> method is called. If an exception is thrown while the data is being processed, for example as described in <i><a href="Strong_and_weak_typing" title="Strong and weak typing">Strong and weak typing</a></i>, above, the <span class="monospaced">Dispose</span> method will never be called if the developer writes code explicitly declaring and disposing the DataReader without the use of a <span class="monospaced">try</span>-<span class="monospaced">finally</span> block. The <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a> <span class="monospaced">using</span> construct is a good way to avoid this problem, as shown below in the code example.
</p>
<div class="mw-heading mw-heading2"><h2 id="Sample_code">Sample code</h2></div>
<p>Sample of accessing SQL Data using DataReader
</p>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="k">void</span><span class="w"> </span><span class="nf">DataTest</span><span class="p">()</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="p">(</span><span class="n">SqlConnection</span><span class="w"> </span><span class="n">conn1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SqlConnection</span><span class="p">(...))</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">conn1</span><span class="p">.</span><span class="n">Open</span><span class="p">();</span>
<span class="w"> </span><span class="n">SqlCommand</span><span class="w"> </span><span class="n">mycommand</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SqlCommand</span><span class="p">(</span><span class="s">"select * from someTable"</span><span class="p">,</span><span class="w"> </span><span class="n">conn1</span><span class="p">);</span>
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="p">(</span><span class="n">SqlDataReader</span><span class="w"> </span><span class="n">myreader</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mycommand</span><span class="p">.</span><span class="n">ExecuteReader</span><span class="p">())</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">myreader</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="k">null</span><span class="p">)</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">myreader</span><span class="p">.</span><span class="n">Read</span><span class="p">())</span>
<span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">myreader</span><span class="p">.</span><span class="n">GetValue</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="n">ToString</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">":"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">myreader</span><span class="p">.</span><span class="n">GetTypeName</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">mycommand</span><span class="p">.</span><span class="n">Dispose</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="k">using</span><span class="w"> </span><span class="nn">System</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">System.Collections.Generic</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">System.Linq</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">System.Text</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">System.Data.Odbc</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">MySql.Data.MySqlClient</span><span class="p">;</span>
<span class="k">namespace</span><span class="w"> </span><span class="nn">ConsoleApplication1</span><span class="p">;</span>
<span class="k">class</span><span class="w"> </span><span class="nc">Program</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">Main</span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">Conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Server=localhost;Uid=root;Pwd=thiru;Database=Employee"</span><span class="p">;</span>
<span class="w"> </span><span class="n">MySql</span><span class="p">.</span><span class="n">Data</span><span class="p">.</span><span class="n">MySqlClient</span><span class="p">.</span><span class="n">MySqlConnection</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MySql</span><span class="p">.</span><span class="n">Data</span><span class="p">.</span><span class="n">MySqlClient</span><span class="p">.</span><span class="n">MySqlConnection</span><span class="p">(</span><span class="n">Conn</span><span class="p">);</span>
<span class="w"> </span>
<span class="w"> </span><span class="n">MySqlCommand</span><span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MySqlCommand</span><span class="p">(</span><span class="s">"select * from emp"</span><span class="p">,</span><span class="w"> </span><span class="n">conn</span><span class="p">);</span>
<span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="n">Open</span><span class="p">();</span>
<span class="w"> </span><span class="n">MySqlDataReader</span><span class="w"> </span><span class="n">Ada</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">comm</span><span class="p">.</span><span class="n">ExecuteReader</span><span class="p">();</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">Ada</span><span class="p">.</span><span class="n">Read</span><span class="p">())</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">Ada</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-DataReaders-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-DataReaders_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataadapters-and-datareaders">"DataAdapters and DataReaders"</a>. <i>docs.microsoft.com</i>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">4 September</span> 2017</span>.</cite></span>
</li>
</ol></div></div>
<dl><dd><ul><li><small><cite id="CITEREFFoggon2006" class="citation book cs1">Foggon, Damien (2006). <a rel="nofollow" class="external text" href="https://link.springer.com/chapter/10.1007/978-1-4302-0146-5_5">"DataReader and DataSet"</a>. <i>Beginning ASP.NET 2.0 Databases: From Novice to Professional</i>. Apress. pp. <span class="nowrap">155–</span>187. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-1-4302-0146-5_5">10.1007/978-1-4302-0146-5_5</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4302-0146-5</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">22 March</span> 2025</span>.</cite></small></li></ul></dd></dl>
<dl><dd><ul><li><small><cite id="CITEREFPolli2004" class="citation book cs1">Polli, Andrea (10 October 2004). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/1027527.1027654">"DATAREADER: A tool for art and science collaborations"</a>. <i>Proceedings of the 12th annual ACM international conference on Multimedia</i>. Association for Computing Machinery. pp. <span class="nowrap">520–</span>523. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1027527.1027654">10.1145/1027527.1027654</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>1-58113-893-8</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">22 March</span> 2025</span>.</cite></small></li></ul></dd></dl>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby=".NET630" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id=".NET630" style="font-size:114%;margin:0 4em"><a href=".NET" title=".NET">.NET</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><a href="Microsoft_.NET_strategy" title="Microsoft .NET strategy">.NET strategy</a></li>
<li><a href="List_of_.NET_libraries_and_frameworks" title="List of .NET libraries and frameworks">Libraries and frameworks</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Implementations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href=".NET" title=".NET">.NET</a> (Core)</li>
<li><a href=".NET_Framework" title=".NET Framework">.NET Framework</a>
<ul><li><a href=".NET_Framework_version_history" title=".NET Framework version history">Version history</a></li></ul></li>
<li><a href=".NET_Compact_Framework" title=".NET Compact Framework">.NET Compact Framework</a></li>
<li><a href=".NET_Micro_Framework" title=".NET Micro Framework">.NET Micro Framework</a></li>
<li><a href="DotGNU" title="DotGNU">DotGNU</a></li>
<li><a href="Mono_(software)" title="Mono (software)">Mono</a></li>
<li><a href="XNA_Framework" class="mw-redirect" title="XNA Framework">XNA Framework</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Software_architecture" title="Software architecture">Architecture</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a> (CLR)</li>
<li><a href="COM_Interop" title="COM Interop">COM Interop</a></li>
<li><a href="Framework_Class_Library" title="Framework Class Library">Framework Class Library</a> (FCL)</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Software_component" title="Software component">Components</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ADO.NET" title="ADO.NET">ADO.NET</a>
<ul><li><a href="Entity_Framework" title="Entity Framework">Entity Framework</a></li></ul></li>
<li><a href="ASP.NET" title="ASP.NET">ASP.NET</a>
<ul><li><a href="ASP.NET_Web_Forms" title="ASP.NET Web Forms">Web Forms</a></li>
<li><a href="ASP.NET_AJAX" title="ASP.NET AJAX">AJAX</a></li>
<li><a href="ASP.NET_Core" title="ASP.NET Core">Core</a></li>
<li><a href="ASP.NET_Dynamic_Data" title="ASP.NET Dynamic Data">Dynamic Data</a></li>
<li><a href="ASP.NET_MVC" title="ASP.NET MVC">MVC</a></li>
<li><a href="ASP.NET_Razor" title="ASP.NET Razor">Razor</a></li></ul></li>
<li><a href="Avalonia_(software_framework)" title="Avalonia (software framework)">Avalonia</a></li>
<li><a href="ClickOnce" title="ClickOnce">ClickOnce</a></li>
<li><a href="Dynamic_Language_Runtime" title="Dynamic Language Runtime">Dynamic Language Runtime</a></li>
<li><a href="Extensible_Application_Markup_Language" title="Extensible Application Markup Language">Extensible Application Markup Language</a> (XAML)</li>
<li><a href="Language_Integrated_Query" title="Language Integrated Query">Language Integrated Query</a> (LINQ)</li>
<li><a href="Managed_Extensibility_Framework" title="Managed Extensibility Framework">Managed Extensibility Framework</a></li>
<li><a href="Microsoft_Silverlight" title="Microsoft Silverlight">Microsoft Silverlight</a></li>
<li><a href="Microsoft_XNA" title="Microsoft XNA">Microsoft XNA</a></li>
<li><a href="Parallel_Extensions" title="Parallel Extensions">Parallel Extensions</a></li>
<li><a href="Windows_Communication_Foundation" title="Windows Communication Foundation">Windows Communication Foundation</a> (WCF)
<ul><li><a href="WCF_Data_Services" title="WCF Data Services">WCF Data Services</a></li></ul></li>
<li><a href="Windows_Forms" title="Windows Forms">Windows Forms</a> (WinForms)</li>
<li><a href="Windows_Identity_Foundation" title="Windows Identity Foundation">Windows Identity Foundation</a> (WIF)</li>
<li><a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">Windows Presentation Foundation</a> (WPF)</li>
<li><a href="Windows_Workflow_Foundation" title="Windows Workflow Foundation">Windows Workflow Foundation</a> (WF)</li>
<li><a href=".NET_Remoting" title=".NET Remoting">.NET Remoting</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_tool" title="Programming tool">Tools</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Decompiler" title="Decompiler">Decompilers</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href=".NET_Reflector" title=".NET Reflector">.NET Reflector</a></li>
<li><a href="JetBrains" title="JetBrains">dotPeek</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Obfuscation_(software)" title="Obfuscation (software)">Obfuscators</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Dotfuscator" title="Dotfuscator">Dotfuscator</a></li>
<li><a href="Redgate" title="Redgate">SmartAssembly</a></li></ul>
</div></td></tr><tr><td colspan="2" class="navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CLR_Profiler" title="CLR Profiler">CLR Profiler</a></li>
<li><a href="ILAsm" title="ILAsm">ILAsm</a></li>
<li><a href=".NET_Compiler_Platform" class="mw-redirect" title=".NET Compiler Platform">.NET Compiler Platform</a></li>
<li><a href="Native_Image_Generator" title="Native Image Generator">Native Image Generator</a> (NGen)</li>
<li><a href="XAMLPad" class="mw-redirect" title="XAMLPad">XAMLPad</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Integrated_development_environment" title="Integrated development environment">IDEs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_Visual_Studio" class="mw-redirect" title="Microsoft Visual Studio">Visual Studio</a>
<ul><li><a href="Microsoft_Blend" title="Microsoft Blend">Blend</a></li>
<li><a href="Microsoft_Visual_Studio_Express" title="Microsoft Visual Studio Express">Express</a></li></ul></li>
<li><a href="MonoDevelop" title="MonoDevelop">MonoDevelop</a></li>
<li><a href="SharpDevelop" title="SharpDevelop">SharpDevelop</a></li>
<li><a href="Xamarin_Studio" class="mw-redirect" title="Xamarin Studio">Xamarin Studio</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href=".NET_Foundation" title=".NET Foundation">.NET Foundation</a></li>
<li><a href="Microsoft" title="Microsoft">Microsoft</a></li>
<li><a href="Xamarin" title="Xamarin">Xamarin</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category</li>
<li><span class="noviewer" typeof="mw:File"><span title="List-Class article"></span></span> <a href=".NET_Framework_version_history" title=".NET Framework version history">List</a></li>
<li><span class="noviewer" typeof="mw:File"><span title="Commons page"></span></span> <a href="https://commons.wikimedia.org/wiki/Category:.NET" class="extiw external" title="commons:Category:.NET">Commons</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-01" href="https://en.wikipedia.org/wiki/?title=DataReader&oldid=1283395033">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>